<!DOCTYPE html>
            <html>
                <head>                    
                    <meta http-equiv="X-UA-Compatible" content="IE=edge">
                    <meta http-equiv="content-type" content="text/html; charset=utf-8">
                    <title>快速部署说明.md</title>
                    <style type="text/css">
                    /*
Copyright (c) 2017 Chris Patuzzo
https://twitter.com/chrispatuzzo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

body {
  font-family: Helvetica, arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: white;
  padding: 30px;
  color: #333;
}

body &gt; *:first-child {
  margin-top: 0 !important;
}

body &gt; *:last-child {
  margin-bottom: 0 !important;
}

a {
  color: #4183C4;
  text-decoration: none;
}

a.absent {
  color: #cc0000;
}

a.anchor {
  display: block;
  padding-left: 30px;
  margin-left: -30px;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
}

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
  cursor: text;
  position: relative;
}

h2:first-child, h1:first-child, h1:first-child + h2, h3:first-child, h4:first-child, h5:first-child, h6:first-child {
  margin-top: 0;
  padding-top: 0;
}

h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
  text-decoration: none;
}

h1 tt, h1 code {
  font-size: inherit;
}

h2 tt, h2 code {
  font-size: inherit;
}

h3 tt, h3 code {
  font-size: inherit;
}

h4 tt, h4 code {
  font-size: inherit;
}

h5 tt, h5 code {
  font-size: inherit;
}

h6 tt, h6 code {
  font-size: inherit;
}

h1 {
  font-size: 28px;
  color: black;
}

h2 {
  font-size: 24px;
  border-bottom: 1px solid #cccccc;
  color: black;
}

h3 {
  font-size: 18px;
}

h4 {
  font-size: 16px;
}

h5 {
  font-size: 14px;
}

h6 {
  color: #777777;
  font-size: 14px;
}

p, blockquote, ul, ol, dl, li, table, pre {
  margin: 15px 0;
}

/*
hr {
  border: 0 none;
  color: #cccccc;
  height: 4px;
  padding: 0;
}
*/
body &gt; h2:first-child {
  margin-top: 0;
  padding-top: 0;
}

body &gt; h1:first-child {
  margin-top: 0;
  padding-top: 0;
}

body &gt; h1:first-child + h2 {
  margin-top: 0;
  padding-top: 0;
}

body &gt; h3:first-child, body &gt; h4:first-child, body &gt; h5:first-child, body &gt; h6:first-child {
  margin-top: 0;
  padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0;
}

h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
  margin-top: 0;
}

li p.first {
  display: inline-block;
}

ul, ol {
  padding-left: 30px;
}

ul :first-child, ol :first-child {
  margin-top: 0;
}

ul :last-child, ol :last-child {
  margin-bottom: 0;
}

dl {
  padding: 0;
}

dl dt {
  font-size: 14px;
  font-weight: bold;
  font-style: italic;
  padding: 0;
  margin: 15px 0 5px;
}

dl dt:first-child {
  padding: 0;
}

dl dt &gt; :first-child {
  margin-top: 0;
}

dl dt &gt; :last-child {
  margin-bottom: 0;
}

dl dd {
  margin: 0 0 15px;
  padding: 0 15px;
}

dl dd &gt; :first-child {
  margin-top: 0;
}

dl dd &gt; :last-child {
  margin-bottom: 0;
}

blockquote {
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777;
}

blockquote &gt; :first-child {
  margin-top: 0;
}

blockquote &gt; :last-child {
  margin-bottom: 0;
}

table {
  padding: 0;
}
table tr {
  border-top: 1px solid #cccccc;
  background-color: white;
  margin: 0;
  padding: 0;
}

table tr:nth-child(2n) {
  background-color: #f8f8f8;
}

table tr th {
  font-weight: bold;
  border: 1px solid #cccccc;
  text-align: left;
  margin: 0;
  padding: 6px 13px;
}

table tr td {
  border: 1px solid #cccccc;
  text-align: left;
  margin: 0;
  padding: 6px 13px;
}

table tr th :first-child, table tr td :first-child {
  margin-top: 0;
}

table tr th :last-child, table tr td :last-child {
  margin-bottom: 0;
}

img {
  max-width: 100%;
}

span.frame {
  display: block;
  overflow: hidden;
}

span.frame &gt; span {
  border: 1px solid #dddddd;
  display: block;
  float: left;
  overflow: hidden;
  margin: 13px 0 0;
  padding: 7px;
  width: auto;
}

span.frame span img {
  display: block;
  float: left;
}

span.frame span span {
  clear: both;
  color: #333333;
  display: block;
  padding: 5px 0 0;
}

span.align-center {
  display: block;
  overflow: hidden;
  clear: both;
}

span.align-center &gt; span {
  display: block;
  overflow: hidden;
  margin: 13px auto 0;
  text-align: center;
}

span.align-center span img {
  margin: 0 auto;
  text-align: center;
}

span.align-right {
  display: block;
  overflow: hidden;
  clear: both;
}

span.align-right &gt; span {
  display: block;
  overflow: hidden;
  margin: 13px 0 0;
  text-align: right;
}

span.align-right span img {
  margin: 0;
  text-align: right;
}

span.float-left {
  display: block;
  margin-right: 13px;
  overflow: hidden;
  float: left;
}

span.float-left span {
  margin: 13px 0 0;
}

span.float-right {
  display: block;
  margin-left: 13px;
  overflow: hidden;
  float: right;
}

span.float-right &gt; span {
  display: block;
  overflow: hidden;
  margin: 13px auto 0;
  text-align: right;
}

code, tt {
  margin: 0 2px;
  padding: 0 5px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
}

pre code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent;
}

.highlight pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
}

pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
}

pre code, pre tt {
  background-color: transparent;
  border: none;
}

/* Syntax Highlighting */

.plainText {
 background-color: #FFFFFF;
 color: #000000;
}
.htmlServerSideScript {
 background-color: #FFFF00;
}
.htmlComment {
 color: #008000;
}
.htmlTagDelimiter {
 color: #0000FF;
}
.htmlElementName {
 color: #A31515;
}
.htmlAttributeName {
 color: #FF0000;
}
.htmlAttributeValue {
 color: #0000FF;
}
.htmlOperator {
 color: #0000FF;
}
.comment {
 color: #008000;
}
.xmlDocTag {
 color: #808080;
}
.xmlDocComment {
 color: #008000;
}
.string {
 color: #A31515;
}
.stringCSharpVerbatim {
 color: #A31515;
}
.keyword {
 color: #0000FF;
}
.preprocessorKeyword {
 color: #0000FF;
}
.htmlEntity {
 color: #FF0000;
}
.xmlAttribute {
 color: #FF0000;
}
.xmlAttributeQuotes {
 color: #000000;
}
.xmlAttributeValue {
 color: #0000FF;
}
.xmlCDataSection {
 color: #808080;
}
.xmlComment {
 color: #008000;
}
.xmlDelimiter {
 color: #0000FF;
}
.xmlName {
 color: #A31515;
}
.className {
 color: #48D1CC;
}
.cssSelector {
 color: #A31515;
}
.cssPropertyName {
 color: #FF0000;
}
.cssPropertyValue {
 color: #0000FF;
}
.sqlSystemFunction {
 color: #FF00FF;
}
.powershellAttribute {
 color: #B0E0E6;
}
.powershellOperator {
 color: #808080;
}
.powershellType {
 color: #008080;
}
.powershellVariable {
 color: #FF4500;
}
.type {
 color: #008080;
}
.typeVariable {
 color: #008080;
 font-style: italic;
}
.namespace {
 color: #000080;
}
.constructor {
 color: #800080;
}
.predefined {
 color: #000080;
}
.pseudoKeyword {
 color: #000080;
}
.stringEscape {
 color: #808080;
}
.controlKeyword {
 color: #0000FF;
}
.number {
}
.operator {
}
.delimiter {
}
.markdownHeader {
 font-weight: bold;
}
.markdownCode {
 color: #008080;
}
.markdownListItem {
 font-weight: bold;
}
.italic {
 font-style: italic;
}
.bold {
 font-weight: bold;
}

                    </style>
                </head>
                <body style="">
                <h1 id="0">一键部署influxDB 冗余历史服务器</h1>
<h2 id="2">1. 拷贝相关文件。</h2>
<h4 id="4">新建程序文件夹</h4>
<p id="5">在历史服务器（主机与备机）新建程序文件夹:<code>C:\software\influxDB-1.8.10</code>
（不建议更改！）</p>
<h4 id="7">拷贝文件</h4>
<ul id="8">
<li id="8">将本文件夹内的全部文件拷贝到历史服务器该文件夹</li>
</ul>
<h4 id="10">拷贝influx程序组</h4>
<ul id="11">
<li id="11">拷贝 <code>C:\Siemens\Automation\WinCC_OA\3.19\bin</code> 如下 influxDB 数据库核心程序：</li>
</ul>
<p id="13"><code>influxd.exe</code>          ：influxdb服务器（必须）<br />
<code>influx.exe</code>         ：influxdb命令行客户端（必须）</p>
<p id="16">到该文件夹</p>
<h2 id="19">2. 配置参数</h2>
<p id="20">修改var.bat,指定安装端口和实例的数量。</p>
<p id="22">设置db_path，格式示例:c:\influx, 历史数据库将存储到这个文件夹下<br />
设置influxDB的并发实例数量。<br />
每个分布式系统占用1个实例<br />
设置起始实例，instance_start 1001代表实例开启的实例使用1001端口号。<br />
instance_end 1050代表最后1个实例开启1050端口号。<br />
将自动创建连续的从1001到1050的10个influxDB实例。<br />
端口号设定的范围：[1001,1200], 不支持其他端口号的设定！</p>
<p id="30">历史数据库将开启从1001到1050端口号，注册到Windows服务项50个并发历史库读写访问服务<br />
支持开机自运行</p>
<p id="33">db_backup_path是influxDB的数据库备份路径。会自动生成。</p>
<div id="36" class="lang-batch editor-colors"><div class="text"><pre>
set db_path=c:\influx
set instance_start=1001
set instance_end=1050
set db_backup_path=c:\influx_backup
</pre></div>
</div>
<h2 id="43">3. 双击install.bat安装</h2>
<p id="45">系统将提示是否用管理员权限，点击是。</p>
<p id="47">系统会自动生成一系列的历史数据的文件夹：<br />
<code>c:\influx\db1001</code> 存储端口1001对应的历史服务器<br />
<code>c:\influx\db1002</code> 存储端口1002对应的历史服务器<br />
...</p>
<p id="52">同时，系统会自动生成一系列的备份历史数据的文件夹：<br />
<code>c:\influx_backup\db1001</code> 存储端口1001对应的历史服务器备份文件夹
<code>c:\influx_backup\db1002</code> 存储端口1002对应的历史服务器备份文件夹
...</p>
<p id="57">完成安装。</p>
<h3 id="59">在WinCC OA一侧，添加一个NGA的backend，名称为</h3>
<p id="61"><code>HIS</code></p>
<p id="63">将<code>HIS</code>的类型设置为influx_dual,此时自动生成四个influxdb的归档组：</p>
<ol id="64">
<li id="64">HIS   			WinCC OA 主机连接到历史服务器主机</li>
<li id="65">HIS_2  			WinCC OA 主机连接到历史服务器备机</li>
<li id="66">HIS_R  			WinCC OA 备机连接到历史服务器备机</li>
<li id="67">HIS_R_2  		WinCC OA 备机连接到历史服务器主机</li>
</ol>
<p id="69">将某个分布式节点syste ID为5对应的influxDB的服务地址填写为：<br />
<code>HIS:   	http://&lt;his-server-a&gt;:1005</code><br />
<code>HIS_2:   	http://&lt;his-server-b&gt;:1005</code><br />
<code>HIS_R:   	http://&lt;his-server-b&gt;:1005</code><br />
<code>HIS_R_2:   http://&lt;his-server-a&gt;:1005</code></p>
<p id="76">数据库填写为：</p>
<p id="78"><code>HIS:   	winccoa</code><br />
<code>HIS_2:   	winccoa</code><br />
<code>HIS_R:   	winccoa</code><br />
<code>HIS_R_2:   winccoa</code></p>
<p id="84">备份路径（backupPath）</p>
<p id="86"><code>HIS:   	backupPath：c:\influx_backup\db1005</code><br />
<code>HIS_2:   	backupPath：c:\influx_backup\db1005</code><br />
<code>HIS_R:   	backupPath：c:\influx_backup\db1005</code><br />
<code>HIS_R_2:   backupPath：c:\influx_backup\db1005</code></p>
<p id="91">备份的主机连接字符串（backupHostConnectionString）</p>
<p id="93"><code>HIS:   	backupHostConnectionString：http://&lt;his-server-a&gt;:10005</code><br />
<code>HIS_2:   	backupHostConnectionString：http://&lt;his-server-b&gt;:10005</code>
<code>HIS_R:   	backupHostConnectionString：http://&lt;his-server-b&gt;:10005</code>
<code>HIS_R_2:   backupHostConnectionString：http://&lt;his-server-a&gt;:10005</code>
（注意，备份的端口号是从10000开始，本例是10005！）</p>
<p id="99">历史服务器的bin路径（influxBinPath）</p>
<p id="101"><code>HIS:   	influxBinPath：C:\software\influxDB-1.8.10\influx.exe</code><br />
<code>HIS_2:   	influxBinPath：C:\software\influxDB-1.8.10\influx.exe</code>
<code>HIS_R:   	influxBinPath：C:\software\influxDB-1.8.10\influx.exe</code>
<code>HIS_R_2:   influxBinPath：C:\software\influxDB-1.8.10\influx.exe</code></p>
<h3 id="106">手动新建几个归档组：</h3>
<p id="107"><code>HIS_&lt;sysname&gt;_AI_FAST</code>  对应于 <code>&lt;sysname&gt;_AI_FAST</code>的中央历史归档并行归档<br />
<code>HIS_&lt;sysname&gt;_AI_SLOW</code>  对应于 <code>&lt;sysname&gt;_AI_FAST</code>的中央历史归档并行归档<br />
<code>HIS_&lt;sysname&gt;_DI_DO_AO</code>  对应于 <code>&lt;sysname&gt;_DI_DO_AO</code>的中央历史归档并行归档</p>
<p id="111">如：<br />
<code>HIS_MEP_DI_DO_AO</code>归档组，对应于 <code>MEP_DI_DO_AO</code>归档组</p>
<h3 id="114">批量设置并行归档</h3>
<p id="115">运行 <code>LIB319\panels\tools\LIB_NGA同时归档到本地和远程.xml</code></p>
<p id="117">修改第一行的代码：</p>
<p id="119">string subSystemID = &quot;MEP03&quot;;</p>
<p id="121">保存，执行。结束。</p>
<h3 id="125">全部删除历史库的方法</h3>
<p id="127">双击
<code>deinstall.bat</code>
获得管理员权限后，将自动执行清理程序。
（注意：包括历史数据文件、备份文件夹在内的都将被清除！请谨慎使用！）</p>

                </body>
            </html>
            